package com.atguigu.lease.common.exception;

import com.atguigu.lease.common.result.ResultCodeEnum;
import lombok.Data;

/**
 * Description:
 *
 * @author Yanxinhao on 2024/11/18
 */
@Data
public class LeaseException extends RuntimeException{
    //因为继承自Throwable，因此自带String类型的Message属性
    private Integer code;

    /**
     * 自定义通过错误信息以及状态码来构造异常
     * @param message 错误信息
     * @param code 状态码
     */
    public LeaseException(Integer code,String message){
        super(message);
        this.code = code;
    }


    /**
     * 自定义通过枚举类来构造异常
     * @param resultCodeEnum
     */
    public LeaseException(ResultCodeEnum resultCodeEnum){
        //TODO super()语句必须在最前
        // 因为 super() 调用必须是构造方法中的第一条语句
        super(resultCodeEnum.getMessage());
        this.code = resultCodeEnum.getCode();
    }

    //重写toString方法
    @Override
    public String toString() {
        return "LeaseException{" +
                "code=" + code +
                ", message=" + this.getMessage() +
                '}';
    }

}